1. Technical Field of the Invention
The present invention relates in general to a presence-based communication system, and in particular, to managing a contact list in a presence-based communication system.
2. Description of Related Art
With today's widespread use of the Internet as a primary communication medium, data communication devices have been designed that are capable of communicating over packet-switched networks. For instance, telephones, pagers, personal digital assistant devices, cell phones, handheld computers, and fax machines can be accessed and controlled via the Internet. Communication over a packet-switched network using communication devices that traditionally communicate over a circuit-switched telecommunications network is generally known as network telephony, or IP telephony when an IP network is involved.
Various types of user communication devices (e.g., a cell phone, laptop or handheld PC, desktop PC, and the like) can identify themselves to the network using a suitable identifier (e.g., username@company.com). “Presence” refers to, for example, the availability, proximity, activity level, or operating state of a presentity, such as a user, object, or anything that can have some kind of state. Presence can be loosely defined as knowledge about a presentity that is displayed to a watcher. Status information about the presentity's communication and other conditions is collected by various methods and devices for aggregation and processing or by a presence engine in order to transform the raw data into some useful form for the watcher.
The ability for users or objects to monitor each other's presence is a feature offered in connection with many applications that support network telephony. For example, instant messaging (“IM”) applications have a buddy list or contact list feature, in which a user of the application can determine whether select users or objects are available for engaging in communication. The data retrieved and returned to the contact list, e.g., “John OFFLINE” or “Susan ONLINE”, is referred to as “presence information,” and is generally maintained by a presence server in the data network, which is often a dedicated server. Typically, the presence server supports network telephony protocols such as Session Initiation Protocol (SIP). Users or objects can register their communication devices with the presence server in order to have their presence maintained and to allow various programs on the network to facilitate network telephony services. A first device user wishing to detect the presence of a second device user does so by “subscribing” with the presence server, such as via a SIP SUBSCRIBE message. The presence server intermediates between the first device user (also known as a “watcher” or “subscriber”) and the second device user (or “presentity”) to facilitate the communication of the presentity's presence information to the watcher.
Additional details about presence and presence modeling are set forth in the Internet Engineering Task Force (IETF) Request for Comment (RFC) 2778 entitled “A model for Presence and Instant Messaging,” dated February 2002; RFC 2779 entitled “Instant Messaging/Presence Protocol Requirements,” dated February 2002; and Internet-Draft identified as <<draft-schulzrinne-simple-rpids-01.ps>> and entitled “RPIDS—Rich Presence Information Data Format for Presence Based on the Session Initiation Protocol (SIP),” dated Feb. 18, 2003, which are incorporated herein by reference.
Presence information is conventionally displayed as a one-dimensional contact list that indicates the presence status (e.g., ONLINE or OFFLINE) of the user and one or more “buddies” or contacts. When the user selects a preference for a contact, the selected preference is currently not displayed on the list. For example, the user may prefer that a particular contact be able to reach him while he is at home. This can be accomplished by enabling a “find-me/follow-me” (“FMFM”) feature for a contact in the preferences for that contact. However, if this preference setting is not conspicuously and constantly displayed in connection with the contact list, the user may not realize that the preference has not been set appropriately and the contact will not be able automatically to reach the user.
As another example, the user (presentity) may prefer that different contacts (watchers) see different presence states of the user. This can also be accomplished by setting different rules (filters) for each contact in the preferences of each contact. For example, the user can set the preferences so that a particular contact is able to see either the full presence state of the user, a partial presence state of the user or no presence state of the user. However, when the user selects different rules for one or more contacts to block some portion of the user's presence state for those contacts, the user is not able to discern the resulting presence state that each watcher sees by looking at the contact list. For example, if the user does not want to receive any communication requests from a certain contact (watcher), the watcher will only see that the user's presence state is unavailable.
Currently, a main menu option (such as “Tools”) is used to set preferences and policies in connection with the user's contact list. By nature, setting up preferences/policies using the main menu requires the user to make a series of selections via an input device, so it is not a particularly good solution for instant communications when the user needs to control communications requests instantaneously. Additionally, after the selections are made, a similar series of selections will need to be made to determine the current preference/policy settings for a given contact or group of contacts in the contact list. Therefore, what is needed is a mechanism for representing the presence state of the user (presentity) for each contact (watcher) in the contact list.